package com.fowo.api.model.stock.in.raw.material;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import javax.validation.constraints.*;
import lombok.Data;

/**
 * 原材料入库单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Data
public class StockInRawMaterialImportPo {

  /** 入库单号 */
  @ExcelProperty("入库单号")
  private String orderSn;

  /** 入库仓库 */
  @ExcelProperty("*入库仓库")
  @NotBlank(message = "入库仓库不能为空")
  @Size(max = 50, message = "入库仓库长度不能超过50")
  private String warehouseName;

  /** 入库类型 */
  @ExcelProperty("入库类型")
  private String receiptType;

  /** 总入库量 */
  @ExcelProperty("总入库量")
  @IntegerString(message = "总入库量数值格式不正确", label = "总入库量")
  private String totalStorage;

  /** 收货单号 */
  @ExcelProperty("收货单号")
  @Size(max = 50, message = "收货单号长度不能超过50")
  private String associatedPo;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 500, message = "备注长度不能超过500")
  private String remarks;

  /** 供应商 */
  @ExcelProperty("*供应商")
  @NotBlank(message = "供应商不能为空")
  @Size(max = 50, message = "供应商长度不能超过50")
  private String supplierSupplierName;

  /** 运费 */
  @ExcelProperty("运费")
  @DecimalString(message = "运费小数格式不正确", label = "运费")
  private String freight;

  /** 其他费用 */
  @ExcelProperty("其他费用")
  @DecimalString(message = "其他费用小数格式不正确", label = "其他费用")
  private String otherExpenses;

  /** 费用分配方式 */
  @ExcelProperty("*费用分配方式")
  @NotBlank(message = "费用分配方式不能为空")
  @EnumsString(
    value = { "不分配", "按金额", "按数量", "自定义" },
    message = "费用分配方式只能是“不分配”, “按金额”, “按数量”, “自定义”中的一个"
  )
  private String costAllocationType;

  /** 入库日期 */
  @ExcelProperty("入库日期")
  @DateString(message = "入库日期不是有效的日期格式")
  private String warehousingDate;

  /** 金额 */
  @ExcelProperty("金额")
  private String totalAmount;

  /** 数量 */
  @ExcelProperty("数量")
  private String totalNum;

  /** 部门 */
  @ExcelProperty("部门")
  @Size(max = 50, message = "部门长度不能超过50")
  private String applicationDepName;

  /** 产品类型 */
  @ExcelProperty("*产品类型")
  @NotBlank(message = "产品类型不能为空")
  @EnumsString(
    value = { "原材料", "成品" },
    message = "产品类型只能是“原材料”, “成品”中的一个"
  )
  private String productType;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String cgRealname;

  /** 生成应付 */
  @ExcelProperty("生成应付")
  @EnumsString(
    value = { "未生成", "已生成" },
    message = "生成应付只能是“未生成”, “已生成”中的一个"
  )
  private String generateAp;

  /** 申请部门 */
  @ExcelProperty("申请部门")
  @Size(max = 50, message = "申请部门长度不能超过50")
  private String applicationDepName1;

  /** wid */
  @ExcelProperty("wid")
  @Size(max = 50, message = "wid长度不能超过50")
  private String wid;

  /** 采购员id */
  @ExcelProperty("采购员id")
  @Size(max = 50, message = "采购员id长度不能超过50")
  private String cgUidName;

  /** 采购组织 */
  @ExcelProperty("*采购组织")
  @NotBlank(message = "采购组织不能为空")
  @Size(max = 50, message = "采购组织长度不能超过50")
  private String purchasingOrgName;

  /** 需求组织 */
  @ExcelProperty("*需求组织")
  @NotBlank(message = "需求组织不能为空")
  @Size(max = 50, message = "需求组织长度不能超过50")
  private String needOrgName;

  /** 添加类型 */
  @ExcelProperty("添加类型")
  private String addType;

  /** 审批状态 */
  @ExcelProperty("审批状态")
  private String aStatus;

  /** 单据状态 */
  @ExcelProperty("单据状态")
  @EnumsString(
    value = { "待提交", "待入库", "已完成", "已撤销" },
    message = "单据状态只能是“待提交”, “待入库”, “已完成”, “已撤销”中的一个"
  )
  private String status;

  /** 采购单号 */
  @ExcelProperty("采购单号")
  @Size(max = 50, message = "采购单号长度不能超过50")
  private String purchaseOrderCode;

  /** 目标表ID列 */
  @ExcelProperty("目标表ID列")
  @Size(max = 50, message = "目标表ID列长度不能超过50")
  private String parentId;

  /** 是否推送领星 */
  @ExcelProperty("是否推送领星")
  @BooleanString(message = "是否推送领星格式不正确，请使用“是”，“否”")
  private String isPush;
}
